﻿Imports EVOLTA.Promocion.Bl.Bc
Imports EVOLTA.Promocion.Bl.Be
Imports EVOLTA.Promocion.Bl.Ctrl
Imports System.IO
Imports System.Net.Mail
Imports System.Data.SqlClient
Imports System.Data


Partial Class Atencion_al_Cliente_AtencionCliente
    Inherits System.Web.UI.Page
    Implements System.Web.UI.ICallbackEventHandler
    Dim Evolta As Eevolta '= Nothing
    Private atencionClientes As List(Of Ecliente) = Nothing
    Private cobranzas As List(Of EseparacionVenta) = Nothing
    Private cobranzaDetalle As List(Of EseparacionVentaDetallePagos) = Nothing
    Private distribuirs As New List(Of EseparacionVentaDetallePagos)
    Private jsMensaje As String = Nothing
    Private separacionVentaPagos As List(Of EseparacionVentaDetallePagos) = Nothing

#Region "           Formulario                              "
    Public Property sCliente() As List(Of Ecliente)
        Get
            If Session("atencionClientes") Is Nothing Then
                Return Nothing
            Else
                Return Session("atencionClientes")
            End If
        End Get
        Set(ByVal value As List(Of Ecliente))
            Session("atencionClientes") = value
        End Set
    End Property
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.CacheControl = "no-cache"
        Response.AddHeader("Pragma", "no-cache")
        Response.Expires = -1
        '***********************************************************'
        If Not IsPostBack Then
            divddlVendedor()
            divddlMoneda()
            divddlFormaPago()
            divddlEntidadFin()
            divddlEstadoMonto()
        End If
        AddHandler egvInmuebles.RowCreated, AddressOf egvInmuebles_RowCreated
        Dim str As New StringBuilder
        str.Append("function mostrarPopup(pop){")
        str.Append("    incializarPantallaPago();")
        str.Append("    $find(pop).show();")
        str.Append("    return true;")
        str.Append("    }")
        str.Append("function ocultarPopup(pop){")
        str.Append("    showDivResultadoSeleccio();")
        str.Append("    $find(pop).hide();")
        str.Append("    return true;")
        str.Append("    }")
        ClientScript.RegisterClientScriptBlock(Me.GetType(), "mostrar", str.ToString, True)
        btnCancelar.Attributes.Add("onclick", "ocultarPopup('" + mpPagos.ClientID + "'); return false;")
        '***********************************************************'
        If Not IsPostBack Then
            selEntidadFin.Attributes.Add("onchange", "if (this.options[this.selectedIndex].value == '00') {document.getElementById('ctl00$ContentPlaceHolder1$selNroCuenta').length=1;} else {CallTheServer('divddlNroCta@' + this.options[this.selectedIndex].value);};return false;")
        End If
        Dim cbReference As String
        cbReference = Page.ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData", "null", True)
        Dim callbackScript As String = ""
        callbackScript &= "function CallTheServer(arg)" & _
                          "{" & cbReference & "; }"

        Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "CallTheServer", callbackScript, True)
    End Sub
    Private Sub divddlVendedor()
        Me.selVendedor.DataSource = Rvendedor.SeleccionarXEstado(Me.Master.descEmpresa, True)
        Me.selVendedor.DataTextField = "NombresCompletos"
        Me.selVendedor.DataValueField = "idVendedor"
        Me.selVendedor.DataBind()
    End Sub
    Private Sub divddlMoneda()
        Me.selTpoMoneda.DataSource = Rmoneda.SeleccionarTodo(Me.Master.descEmpresa, True)
        Me.selTpoMoneda.DataTextField = "descMoneda"
        Me.selTpoMoneda.DataValueField = "idMoneda"
        Me.selTpoMoneda.DataBind()
    End Sub
    Private Sub divddlFormaPago()
        Me.selFormaPago.DataSource = RformaPago.SeleccionarXEstado(Me.Master.descEmpresa, True)
        Me.selFormaPago.DataTextField = "descFormaPago"
        Me.selFormaPago.DataValueField = "idFormaPago"
        Me.selFormaPago.DataBind()
    End Sub
    Private Sub divddlEntidadFin()
        Me.selEntidadFin.DataSource = RentFinanciera.SeleccionarXEstado(Me.Master.descEmpresa, True)
        Me.selEntidadFin.DataTextField = "descEntidadFin"
        Me.selEntidadFin.DataValueField = "idEntidadFin"
        Me.selEntidadFin.DataBind()
    End Sub
    Private Sub divddlEstadoMonto()
        Dim Eestado As New Ecommons
        Me.ddlEstadoCuotaDetalle.DataSource = Eestado.estadoMonto
        Me.ddlEstadoCuotaDetalle.DataTextField = "descripcion"
        Me.ddlEstadoCuotaDetalle.DataValueField = "codigo"
        Me.ddlEstadoCuotaDetalle.DataBind()
    End Sub

    Private Function obtenerEdit(ByVal pLClientes As System.Linq.IOrderedEnumerable(Of Ecliente)) As String
        Dim datos As New StringBuilder
        datos.Append(pLClientes.ElementAt(0).idCliente.ToString + "|")
        datos.Append(pLClientes.ElementAt(0).EtpoDcmto.descTpoDcmto.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).nroDocumento.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).NombresCompletos.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).direccion.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).telefonoFijo.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).email.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).Eubigeo.descDepartamento.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).Eubigeo.descProvincia.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).Eubigeo.descDistrito.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).razonSocialLaboral.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).telefonoLaboral.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).telefonoCelular.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).puesto.Trim + "|")
        datos.Append(pLClientes.ElementAt(0).codigoSeparacion.Trim + "|")
        datos.Append(cargarPagos(pLClientes.ElementAt(0).nroDocumento.Trim, pLClientes.ElementAt(0).codigoSeparacion.Trim) + "|")
        Return datos.ToString()
    End Function
    Private Function cargarPagos(ByVal nroDocumento As String, ByVal codigoSeparacion As String) As String
        Dim sr As New System.IO.StringWriter()
        Dim htm As New HtmlTextWriter(sr)
        Dim separacionVenta As New EseparacionVenta
        With separacionVenta
            .idProyecto = Me.Master.idProyecto
            .idEtapa = Me.Master.idEtapa
            .nroDocumento = nroDocumento
            .codigoSeparacion = codigoSeparacion
        End With

        Session("cobranza") = cobranzas
        cobranzas = RseparacionVenta.SeleccionarXCobranza(Me.Master.descEmpresa, separacionVenta)
        Session("cobranza") = cobranzas

        cobranzaDetalle = RseparacionVentaDetallePagos.SeleccionarXCobranza(Me.Master.descEmpresa, separacionVenta)
        Session("cobranzaDetalle") = cobranzaDetalle
        egvInmuebles.DataSource = cobranzas
        egvInmuebles.DataBind()
        egvInmuebles.RenderControl(htm)
        htm.Flush()

        Return sr.ToString()
    End Function
    Private Function cargarPagos2(ByVal nroDocumento As String, ByVal idSeparacion As Int32) As String
        Dim sr As New System.IO.StringWriter()
        Dim htm As New HtmlTextWriter(sr)
        Dim separacionVenta As New EseparacionVenta
        With separacionVenta
            .idProyecto = Me.Master.idProyecto
            .idEtapa = Me.Master.idEtapa
            .nroDocumento = nroDocumento
            .idSeparacionVenta = idSeparacion
        End With

        Session("cobranza") = cobranzas
        cobranzas = RseparacionVenta.SeleccionarXCobranza2(Me.Master.descEmpresa, separacionVenta)
        Session("cobranza") = cobranzas

        cobranzaDetalle = RseparacionVentaDetallePagos.SeleccionarXCobranza2(Me.Master.descEmpresa, separacionVenta)
        Session("cobranzaDetalle") = cobranzaDetalle
        egvInmuebles.DataSource = cobranzas
        egvInmuebles.DataBind()
        egvInmuebles.RenderControl(htm)
        htm.Flush()

        Return sr.ToString()
    End Function

    Protected Sub gvwCliente_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles gvwCliente.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
#End Region

#Region "          Datos de Separacion Detalle   "
    Private Property sDetalleSeparacionPagosCtaInicial() As List(Of EseparacionVentaDetallePagos)
        Get
            If Session("detalleSeparacionPagosCtaInicial") Is Nothing Then
                Return Nothing
            Else
                Return Session("detalleSeparacionPagosCtaInicial")
            End If
        End Get
        Set(ByVal value As List(Of EseparacionVentaDetallePagos))
            Session("detalleSeparacionPagosCtaInicial") = value
        End Set
    End Property
#End Region

#Region "           Pagos                                   "
    Protected Sub egvInmuebles_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            Dim strUidSeparacion As String = DataBinder.Eval(e.Row.DataItem, "idSeparacionVenta").ToString()
            Dim egvEstPagoInmueble As GridView = CType(e.Row.FindControl("egvEstPagoInmueble"), GridView)
            If egvEstPagoInmueble IsNot Nothing Then
                AddHandler egvEstPagoInmueble.RowCreated, AddressOf egvEstPagoInmueble_RowCreated
            End If
            If strUidSeparacion.Length > 0 Then
                cobranzaDetalle = Session("cobranzaDetalle")
                Dim LcobranzaDetalles = From pd In cobranzaDetalle _
                                        Where pd.idSeparacionVenta = CType(strUidSeparacion, Int32) _
                                        Order By pd.idEstadoPago Ascending _
                                        Select pd.idSeparacionVenta, pd.idEstadoPago, pd.descEstadoPago Distinct
                If cobranzaDetalle.Count > 0 Then
                    egvEstPagoInmueble.DataSource = LcobranzaDetalles
                    Dim objFila As ExGridView.ExtGridViewRow = CType(e.Row, ExGridView.ExtGridViewRow)
                    objFila.ShowExpand = True
                End If
            End If
        End If
    End Sub
    Public Shared Function EmailTesoreria(ByVal descEmpresa As String, ByVal Perfil As String) As String
        Dim cuentas As String = Nothing
        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_EmailxPerfil_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure

                cmd.Parameters.Add("@Perfil", SqlDbType.VarChar, 200).Value = Perfil
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            Do While dr.Read
                                cuentas = cuentas + dr.GetString(dr.GetOrdinal("email")) + ";"
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return cuentas
    End Function
    Public Shared Function EmailRegistroPago(ByVal descEmpresa As String, ByVal pago As EseparacionVentaDetallePagos) As String
        Dim cuentas As String = Nothing
        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_EmailRegistroPago_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure

                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pago.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pago.idEtapa
                cmd.Parameters.Add("@idSeparacionVenta", SqlDbType.Int).Value = pago.idSeparacionVenta
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            Do While dr.Read
                                cuentas = cuentas + dr.GetString(dr.GetOrdinal("email")) + ";"
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return cuentas
    End Function
    Public Shared Function EmailRechazadoPago(ByVal descEmpresa As String, ByVal pago As EseparacionVentaDetallePagos) As String
        Dim cuentas As String = Nothing
        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_EmailRechazadoPago_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure

                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pago.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pago.idEtapa
                cmd.Parameters.Add("@idSeparacionVenta", SqlDbType.Int).Value = pago.idSeparacionVenta
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            Do While dr.Read
                                cuentas = cuentas + dr.GetString(dr.GetOrdinal("email")) + ";"
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return cuentas
    End Function
    Protected Sub egvEstPagoInmueble_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            Dim egvEstPagoDetalle As ExGridView.ExtGridView = CType(e.Row.FindControl("egvPagoDetalle"), ExGridView.ExtGridView)
            If egvEstPagoDetalle IsNot Nothing Then
                AddHandler egvEstPagoDetalle.RowCreated, AddressOf egvPagoDetalle_RowCreated
            End If
            Dim strUidSeparacion As String = DataBinder.Eval(e.Row.DataItem, "idSeparacionVenta").ToString()
            Dim strUidEstadoPago As String = DataBinder.Eval(e.Row.DataItem, "idEstadoPago").ToString()
            If strUidSeparacion.Length > 0 Then
                cobranzaDetalle = Session("cobranzaDetalle")
                Dim LcobranzaDetalles = From pd In cobranzaDetalle _
                                        Where pd.idSeparacionVenta = CType(strUidSeparacion, Int32) AndAlso _
                                              pd.idEstadoPago = CType(strUidEstadoPago, Int32) _
                                        Select pd
                If cobranzaDetalle.Count > 0 Then
                    egvEstPagoDetalle.DataSource = LcobranzaDetalles
                    Dim objFila As ExGridView.ExtGridViewRow = CType(e.Row, ExGridView.ExtGridViewRow)
                    objFila.ShowExpand = True
                End If
            End If
        End If
    End Sub
    Protected Sub egvPagoDetalle_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
        End If
    End Sub
    'MPE
    Protected Sub btnGenerarCuotas(ByVal Desde As Int32, ByVal Hasta As Int32, ByVal Monto As Decimal)
        Dim wMonto As Decimal
        Dim ctaInicial As EseparacionVentaDetallePagos = Nothing
        Dim ctaInicials As New List(Of EseparacionVentaDetallePagos)

        separacionVentaPagos = Session("distribuirs") 'Me.sDetalleSeparacionPagosCtaInicial

        wMonto = 0
        For Each ctaInicial In separacionVentaPagos
            If ctaInicial.correlativo >= Desde And ctaInicial.correlativo <= Hasta Then
                ctaInicial.cuota = Monto   '0
            End If
            wMonto = wMonto + ctaInicial.cuota
            ctaInicials.Add(ctaInicial)
        Next

        'Me.sDetalleSeparacionPagosCtaInicial = ctaInicials
        Session("distribuirs") = ctaInicials
        gvwDistribuir.DataSource = ctaInicials
        gvwDistribuir.DataBind()
    End Sub
    Private Function cargarCtaCorriente(ByVal idEntidadFin As Int32) As String
        Dim sr As New System.IO.StringWriter()
        Dim htm As New HtmlTextWriter(sr)
        selNroCuenta.DataSource = RctaCorriente.SeleccionarTodo(Me.Master.descEmpresa, True, idEntidadFin)
        selNroCuenta.DataTextField = "nroCuenta"
        selNroCuenta.DataValueField = "idCuenta"
        selNroCuenta.DataBind()
        selNroCuenta.RenderControl(htm)
        htm.Flush()
        Return sr.ToString()
    End Function
    Protected Function estadoDownload(ByVal dato As String) As Boolean
        If dato.Trim.Length > 0 Then
            Return True
        Else
            Return False
        End If
    End Function
    Protected Function rutaScanner(ByVal idMotivo As String, ByVal archivo As String) As String
        Return String.Format("~/cobranza/evoltaDownload.aspx?idMotivo={0}&filename={1}", idMotivo, archivo)
    End Function
    Protected Function CargarDistribuirs(ByVal pIdMotivo As Int32, ByVal pIdSeparVenta As Int32) As String
        cobranzaDetalle = Session("cobranzaDetalle")

        Dim LcobranzaDetalle = From pd In cobranzaDetalle _
                                Where pd.idSeparacionVenta = pIdSeparVenta AndAlso pd.idMotivo = pIdMotivo _
                                     AndAlso pd.idEstadoPago = 1 _
                                Order By pd.correlativo _
                                Select pd


        Dim monto As Decimal = 0
        Dim distribuir As EseparacionVentaDetallePagos = Nothing

        For Each sd As EseparacionVentaDetallePagos In LcobranzaDetalle
            distribuir = New EseparacionVentaDetallePagos
            With distribuir
                .idProyecto = Me.Master.idProyecto
                .idEtapa = Me.Master.idEtapa
                .idSeparacionVenta = sd.idSeparacionVenta
                .idSeparacionVentaPago = sd.idSeparacionVentaPago
                .tpoGestion = sd.tpoGestion
                .idEdificio = sd.idEdificio
                .idModelo = sd.idModelo
                .idUndInmob = 0
                .idTpoInmueble = 0
                .fchPago = sd.fchPago
                .idFormaPago = sd.idFormaPago
                .montoPago = sd.montoPago
                .idMoneda = sd.idMoneda
                .idTpoCambio = 0
                .conInteres = 0
                .tea = 0
                .tim = 0
                .correlativo = sd.correlativo
                .fchCancelacion = sd.fchCancelacion
                .idMotivo = sd.idMotivo
                If sd.idMotivo = 1 Then
                    .descMotivo = "CUOTA INICIAL"
                Else
                    .descMotivo = "SALDO FINANCIAR"
                End If
                .amortizacion = 0
                .interes = 0
                .cuota = sd.cuota
                .saldo = 0
                .idEstadoPago = 1
                .descEstadoPago = "PENDIENTE"
            End With
            distribuirs.Add(distribuir)
        Next

        Session("distribuirs") = distribuirs
        Return ""
    End Function
    Protected Function dividir(ByVal pIdMotivo As Int32, ByVal pIdSeparVenta As Int32, ByVal SaldoCta As Decimal, ByVal DividirCtaInic As Int32, ByVal FchInicioFormaPago As String) As String
        cobranzaDetalle = Session("cobranzaDetalle")

        Dim LcobranzaDetalle = From pd In cobranzaDetalle _
                                Where pd.idSeparacionVenta = pIdSeparVenta AndAlso pd.idMotivo = pIdMotivo _
                                     AndAlso pd.idEstadoPago = 1 _
                                Order By pd.correlativo _
                                Select pd


        Dim CuotaInicial = (From pd In cobranzaDetalle _
                                Where pd.idSeparacionVenta = pIdSeparVenta AndAlso pd.idMotivo = pIdMotivo _
                                     AndAlso pd.idEstadoPago = 1 _
                                Order By pd.correlativo _
                                Select pd.correlativo).Min()

        Dim monto As Decimal = CType(SaldoCta, Decimal)
        Dim nroCta As Int32 = CType(DividirCtaInic, Int32)
        Dim montoCta As Decimal = Math.Round(monto / CType(nroCta, Int32), 2)
        Dim distribuir As EseparacionVentaDetallePagos = Nothing
        For x = 0 To CType(nroCta, Int32) - 1
            distribuir = New EseparacionVentaDetallePagos
            With distribuir
                .idProyecto = Me.Master.idProyecto
                .idEtapa = Me.Master.idEtapa
                .idSeparacionVenta = LcobranzaDetalle.ElementAt(0).idSeparacionVenta
                .idSeparacionVentaPago = x + 1
                .tpoGestion = LcobranzaDetalle.ElementAt(0).tpoGestion
                .idEdificio = 0
                .idModelo = 0
                .idUndInmob = 0
                .idTpoInmueble = 0
                .fchPago = FchInicioFormaPago
                .idFormaPago = LcobranzaDetalle.ElementAt(0).idFormaPago
                .montoPago = monto
                .idMoneda = LcobranzaDetalle.ElementAt(0).idMoneda
                .idTpoCambio = 0
                .conInteres = 0
                .tea = 0
                .tim = 0
                .correlativo = x + CuotaInicial
                If x = 0 Then
                    .fchCancelacion = CType(FchInicioFormaPago, DateTime)
                Else
                    .fchCancelacion = CType(FchInicioFormaPago, DateTime).AddMonths(x)
                End If
                .idMotivo = pIdMotivo
                If pIdMotivo = 1 Then
                    .descMotivo = "CUOTA INICIAL"
                Else
                    .descMotivo = "SALDO FINANCIAR"
                End If
                .amortizacion = 0
                .interes = 0
                .cuota = montoCta
                .saldo = 0
                .idEstadoPago = 1
                .descEstadoPago = "PENDIENTE"
            End With
            distribuirs.Add(distribuir)
        Next
        Session("distribuirs") = distribuirs
        Dim sr As New System.IO.StringWriter()
        Dim htm As New HtmlTextWriter(sr)
        gvwDistribuir.DataSource = distribuirs
        gvwDistribuir.DataBind()
        gvwDistribuir.RenderControl(htm)
        htm.Flush()
        Return sr.ToString()
    End Function
    Protected Sub gvwDistribuir_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvwDistribuir.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            'e.Row.Attributes.Add("OnClick", "CallTheServer('showDetCta@" + e.Row.RowIndex.ToString + "');")
            e.Row.Attributes.Add("OnClick", "CallTheServer('showDetCta@" + DataBinder.Eval(e.Row.DataItem, "correlativo").ToString + "');")
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
    Protected Sub afuFilesEscanerPagos_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles afuFilesEscanerPagos.UploadedComplete
        Dim strNomArchivo As String = e.filename
        Dim strExtension As String = strNomArchivo.Substring(strNomArchivo.LastIndexOf(".") + 1).ToLower.Trim
        If strNomArchivo.Trim.Length > 200 Then
            e.statusMessage = "El nombre del archivo no puede ser más de 200 caracteres."
            Exit Sub
        End If
        If afuFilesEscanerPagos.PostedFile Is Nothing Then
            e.statusMessage = " Debe seleccionar un archivo."
            Exit Sub
        End If
        If afuFilesEscanerPagos.PostedFile.ContentLength = 0 Then
            e.statusMessage = " No puede subir un archivo con peso cero(0)."
            Exit Sub
        End If
        If afuFilesEscanerPagos.PostedFile.ContentLength >= 1048576 Then
            e.statusMessage = " No puede subir un archivo mayor a 1 Mb."
            Exit Sub
        End If
        If Not (strExtension.Equals("jpg") OrElse strExtension.Equals("pdf") OrElse strExtension.Equals("gif")) Then
            e.statusMessage = " Solo puede subir archivos con extensión .jpg (JPG)| .pdf (PDF)| .gif(GIF)."
            Exit Sub
        End If
        Try
            Try
                Dim id As String() = Split(CType(txtIDFileLoad.Text.Trim, String), ",")
                Dim ruta As String = Server.MapPath("~/")
                If (CType(id(0), Int32).Equals(0)) Then
                    ruta += "gestionComercial\scanMontoSeparacion"
                Else
                    ruta += "cobranza\scanPagos"
                End If

                Dim vNomGenerado As String = generarNombre(CType(id(0), Int32), CType(id(1), Int32), CType(id(2), Int32))

                If hdFileOldScanner.Value <> vNomGenerado + "@" + Path.GetFileName(strNomArchivo) Then
                    If File.Exists(ruta + "\" + hdFileOldScanner.Value) Then
                        If (CType(id(0), Int32).Equals(0)) Then
                            File.Move(ruta + "\" + hdFileOldScanner.Value, ruta + "\oldSep\" + hdFileOldScanner.Value)
                        Else
                            File.Move(ruta + "\" + hdFileOldScanner.Value, ruta + "\old\" + hdFileOldScanner.Value)
                        End If
                    End If
                End If
                Dim fileScan As String = ruta + "\" + vNomGenerado + "@" + Path.GetFileName(strNomArchivo)
                afuFilesEscanerPagos.SaveAs(fileScan)
                If File.Exists(fileScan) Then
                    If (CType(id(0), Int32).Equals(0)) Then
                        Dim pago As New EseparacionVenta _
                        With { _
                            .idProyecto = Me.Master.idProyecto, _
                            .idEtapa = Me.Master.idEtapa, _
                            .idSeparacionVenta = CType(id(1), Int32), _
                            .rutaScannerSeparacion = vNomGenerado + "@" + Path.GetFileName(strNomArchivo).Trim, _
                            .idUsuario = Me.Master.idUsuario _
                        }
                        RseparacionVenta.EditarSeparacionPagoFileScan(Me.Master.descEmpresa, pago)
                    Else
                        Dim pago As New EseparacionVentaDetallePagos _
                        With { _
                            .idProyecto = Me.Master.idProyecto, _
                            .idEtapa = Me.Master.idEtapa, _
                            .idSeparacionVenta = CType(id(1), Int32), _
                            .idSeparacionVentaPago = CType(id(2), Int32), _
                            .rutaScanner = vNomGenerado + "@" + Path.GetFileName(strNomArchivo).Trim, _
                            .idUsuario = Me.Master.idUsuario _
                        }
                        RseparacionVentaDetallePagos.cobranzaDetallePagoFileScan(Me.Master.descEmpresa, pago)
                    End If
                End If
            Catch ex As Exception
                jsMensaje = "<script>javascript:alert(' No se pudo completar el proceso; intentelo nuevamente.');</script>)"
            End Try
        Catch ex As Exception
            jsMensaje = "<script>javascript:alert(' Sólo se permiten subir archivos de máximo 1 Mb.');</script>)"
        End Try
    End Sub
    Private Function generarNombre(ByVal idMotivo As String, ByVal idSeparacionVenta As String, ByVal idPago As String) As String
        If idMotivo = 0 Then
            Return Me.Master.descEmpresa.Trim + Me.Master.idProyecto.ToString + Me.Master.idEtapa.ToString + "Pago0_" + _
               Now.Day.ToString.PadLeft(2, "0") + _
               Now.Month.ToString.PadLeft(2, "0") + _
               Now.Year.ToString
        Else
            Return Me.Master.descEmpresa.Trim + Me.Master.idProyecto.ToString + Me.Master.idEtapa.ToString + "Pago" + idMotivo + idSeparacionVenta + idPago
        End If
    End Function
#End Region

#Region "           CallBack                                "
    Private _callbackArgument As String
    Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
        Return _callbackArgument
    End Function
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        Try
            If eventArgument <> String.Empty Then
                Dim varParams() As String = eventArgument.Split("@")
                Dim sr As New System.IO.StringWriter()
                Dim htm As New HtmlTextWriter(sr)
                _callbackArgument = ""
                Select Case varParams(0)
                    Case "divddlNroCta"
                        _callbackArgument = varParams(0).ToString + "|" + cargarCtaCorriente(CType(varParams(1), Int32))
                    Case "divBuscar"
                        Dim pVendedor As New Evendedor With _
                        { _
                         .idProyecto = Me.Master.idProyecto, _
                         .idEtapa = Me.Master.idEtapa, _
                         .idVendedor = CType(varParams(1), Int32) _
                         }
                        atencionClientes = Rcliente.SeleccionarFiltroAtencionClientexNombreApePaternoApeMaternoDNI _
                                           (Me.Master.descEmpresa, False, CType(varParams(2).Trim, String), pVendedor, CType(varParams(3).Trim, String))
                        Me.sCliente = Nothing
                        Me.sCliente = atencionClientes
                        Me.gvwCliente.DataSource = atencionClientes
                        Me.gvwCliente.DataBind()
                        Me.gvwCliente.RenderControl(htm)

                        htm.Flush()

                        _callbackArgument = "divgvwCliente|" + sr.ToString()
                    Case "showDet"
                        atencionClientes = Session("atencionClientes")
                        Evolta = CType(Session("sEVOLTA"), Eevolta)
                        Dim IdPerfil As String = Evolta.idPerfilUsuario.ToString
                        Dim wSr = obtenerEdit(From c In atencionClientes _
                                                                            Where c.idCliente = CType(varParams(1), Int32) _
                                                                            Select c _
                                                                            Order By c.idTpoPersona)
                        'MPE
                        Dim sr2 As New System.IO.StringWriter()
                        Dim htm2 As New HtmlTextWriter(sr2)
                        selSeparacion.DataSource = Session("cobranza")
                        selSeparacion.DataTextField = "detalle"
                        selSeparacion.DataValueField = "idSeparacionVenta"
                        selSeparacion.DataBind()
                        selSeparacion.RenderControl(htm2)
                        htm2.Flush()

                        _callbackArgument = "detalle|showDet|" + sr2.ToString + "|" + wSr + "|" + IdPerfil

                    Case "pago"
                        cobranzaDetalle = Session("cobranzaDetalle")
                        Dim verificando = (From cb In cobranzaDetalle _
                                           Where cb.idMotivo = 1 AndAlso cb.idEstadoPago = 1 _
                                           Select cb.idMotivo).Count()

                        Dim arr As String() = Split(CType(varParams(1).Trim, String), ",")
                        Dim Lpago = From pd In cobranzaDetalle _
                                    Where pd.idSeparacionVenta = CType(arr(0), Int32) AndAlso _
                                          pd.idSeparacionVentaPago = CType(arr(1), Int32) _
                                    Select pd
                        _callbackArgument = "pago|pago|" + _
                                            CType(varParams(1).Trim, String) + "|" + _
                                            Lpago.ElementAt(0).idMotivo.ToString + "|" + _
                                            Lpago.ElementAt(0).fchPago + "|" + _
                                            Lpago.ElementAt(0).fchCancelacion + "|" + _
                                            Lpago.ElementAt(0).cuota.ToString("###,##0.00") + "|" + _
                                            Lpago.ElementAt(0).idMoneda.ToString + "|" + _
                                            Lpago.ElementAt(0).idFormaPago.ToString + "|" + _
                                            Lpago.ElementAt(0).nroDocumento + "|" + _
                                            Lpago.ElementAt(0).idEntidadFin.ToString + "|" + _
                                            cargarCtaCorriente(Lpago.ElementAt(0).idEntidadFin) + "|" + _
                                            Lpago.ElementAt(0).nroCuenta.Trim + "|" + _
                                            Lpago.ElementAt(0).vouchet.Trim() + "|" + _
                                            Lpago.ElementAt(0).rutaScanner.Trim() + "|" + _
                                            Lpago.ElementAt(0).idEstadoPago.ToString + "|" + _
                                            verificando.ToString()
                    Case "guardar"
                        Dim ID As String = CType(varParams(1), String)
                        If ID.Trim.Length > 0 Then
                            Dim arr As String() = Split(ID.Trim, ",")
                            Dim pago As New EseparacionVentaDetallePagos _
                                With { _
                                    .idProyecto = Me.Master.idProyecto, _
                                    .idEtapa = Me.Master.idEtapa, _
                                    .idSeparacionVenta = CType(arr(0), Int32), _
                                    .idSeparacionVentaPago = CType(arr(1), Int32), _
                                    .fchCancelacion = CType(varParams(2), String).Trim, _
                                    .idMoneda = CType(varParams(3), Int32), _
                                    .idFormaPago = CType(varParams(4), Int32), _
                                    .nroDocumento = CType(varParams(5), String).Trim, _
                                    .idEntidadFin = CType(varParams(6), Int32), _
                                    .idCuenta = CType(varParams(7), Int32), _
                                    .nroCuenta = CType(varParams(8), String).Trim, _
                                    .rutaScanner = "", _
                                    .vouchet = CType(varParams(9), String).Trim, _
                                    .idEstadoPago = 2, _
                                    .idUsuario = Me.Master.idUsuario, _
                                    .montoPago = CType(varParams(12), String).Trim, _
                                    .fchPago = CType(varParams(14), String).Trim, _
                                    .descFormaPago = CType(varParams(15), String).Trim _
                                }
                            Dim Inmuebles As New List(Of EseparacionVentaDetalle)
                            Dim Propiedades As String = ""
                            Dim Cliente As String = ""
                            Dim Vendedor As String = ""
                            Dim EmailT As String
                            Dim Correo As Boolean
                            Dim Asunto As String
                            Dim wBody As String
                            Dim Perfil As String
                            Dim descEntidadFinan As String
                            descEntidadFinan = CType(varParams(13), String).Trim
                            Inmuebles = RseparacionVentaDetalle.Inmuebles(Me.Master.descEmpresa, pago.idProyecto, pago.idEtapa, pago.idSeparacionVenta)
                            For Each inmueble As EseparacionVentaDetalle In Inmuebles
                                Propiedades += inmueble.Inmuebles
                                Cliente += inmueble.Cliente
                                Vendedor += inmueble.Vendedor
                            Next
                            If RseparacionVentaDetallePagos.cobranzaDetallePagoEdit(Me.Master.descEmpresa, pago).ToString() Then
                                '***** ENVIO DE EMAIL **********
                                
                                Perfil = "TESORERIA"
                                'EmailT = EmailTesoreria(Me.Master.descEmpresa, Perfil)
                                EmailT = EmailRegistroPago(Me.Master.descEmpresa, pago)
                                If EmailT <> "" Then
                                    'wBody = Me.Master.descProyecto + " Se ha registrado un pago el cual se requiere verificar:" + "<br>"
                                    'wBody = wBody + "Inmuebles : " + Propiedades + "<br>"
                                    'wBody = wBody + "Cliente : " + Cliente + "<br>"
                                    'wBody = wBody + "Entidad Financiera : " + descEntidadFinan + "<br>"
                                    'wBody = wBody + "N° de cuenta : " + pago.nroCuenta.Trim + "<br>"
                                    'wBody = wBody + "N° de operacion : " + pago.vouchet.Trim + "<br>"
                                    'wBody = wBody + "Monto : " + pago.montoPago.ToString + "<br>"
                                    'wBody = wBody + "Vendedor : " + Vendedor + "<br>"
                                    'wBody = wBody + "Por favor no responda a éste e-mail, cualquier observación o sugerencia comunicarse a <u>soporte@evolta.pe</u><br><br>"
                                    'wBody = wBody + "<b>EVOLTA</b><br>"
                                    'wBody = wBody + "<i>Su socio estratégico en el negocio inmobiliario</i><br>"

                                    wBody = "Se ha registrado (APROBADO/REGISTRADO) el siguiente pago en EVOLTA:" + "<br><br>"
                                    wBody = wBody + "PROYECTO: " + Me.Master.descProyecto + "<br>"
                                    wBody = wBody + "ETAPA: " + Me.Master.descEtapa + "<br>"
                                    wBody = wBody + "INMUEBLES: " + Propiedades + "<br>"
                                    wBody = wBody + "CLIENTE: " + Cliente + "<br>"
                                    wBody = wBody + "ENTIDAD FINANCIERA: " + descEntidadFinan + "<br>"
                                    wBody = wBody + "N° DE CUENTA: " + pago.nroCuenta.Trim + "<br>"
                                    wBody = wBody + "FORMA DE PAGO: " + pago.descFormaPago.Trim + "<br>"
                                    wBody = wBody + "N° DE DOCUMENTO: " + pago.nroDocumento.ToString + "<br>"
                                    wBody = wBody + "FECHA DE VENCIMIENTO: " + pago.fchPago.Trim + "<br>"
                                    wBody = wBody + "FECHA DE PAGO: " + pago.fchCancelacion.Trim + "<br>"
                                    wBody = wBody + "N° DE OPERACIÓN: " + pago.vouchet.Trim + "<br>"
                                    wBody = wBody + "MONTO: " + pago.montoPago.ToString + "<br>"
                                    wBody = wBody + "VENDEDOR: " + Vendedor + "<br><br>"
                                    wBody = wBody + "Por favor no responda a éste e-mail, cualquier observación o sugerencia comunicarse a soporte@evolta.pe" + "<br><br>"
                                    wBody = wBody + "<b>EVOLTA</b><br>"
                                    wBody = wBody + "<i>Su socio estratégico en el negocio inmobiliario</i><br><br>"
                                    Asunto = Me.Master.descEmpresa + "/" + Me.Master.descProyecto + ": Se ha registrado un pago el cual se requiere verificar"
                                    Correo = Rsendemail.SendMail(EmailT, Asunto, wBody)
                                End If
                                _callbackArgument = "guardar|guardar|True|" + cargarPagos(CType(varParams(10), String).Trim, CType(varParams(11), String).Trim)
                            Else
                                EmailT = EmailRechazadoPago(Me.Master.descEmpresa, pago)
                                If EmailT <> "" Then
                                    wBody = Me.Master.descEmpresa + " Se ha revisado un pago por verificar:" + "<br>"
                                    wBody = wBody + "Inmuebles : " + Propiedades + "<br>"
                                    wBody = wBody + "Cliente : " + Cliente + "<br>"
                                    wBody = wBody + "Entidad Financiera : " + descEntidadFinan + "<br>"
                                    wBody = wBody + "N° de cuenta : " + pago.nroCuenta.Trim + "<br>"
                                    wBody = wBody + "N° de operacion : " + pago.vouchet.Trim + "<br>"
                                    wBody = wBody + "Monto : " + pago.montoPago.ToString + "<br>"
                                    wBody = wBody + "Vendedor : " + Vendedor + "<br>"
                                    wBody = wBody + "Por favor no responda a éste e-mail, cualquier observación o sugerencia comunicarse a <u>soporte@evolta.pe</u><br><br>"
                                    wBody = wBody + "<b>EVOLTA</b><br>"
                                    wBody = wBody + "<i>Su socio estratégico en el negocio inmobiliario</i><br>"
                                    Asunto = Me.Master.descEmpresa + "/" + Me.Master.descProyecto + ": Se ha registrado un pago el cual se requere verificar"
                                    Correo = Rsendemail.SendMail(EmailT, Asunto, wBody)
                                End If
                                _callbackArgument = "guardar|guardar|False"
                            End If
                        End If
                    Case "upDetalle"
                        _callbackArgument = "guardar|guardar|True|" + cargarPagos(CType(varParams(1), String).Trim, CType(varParams(2), String).Trim)

                    Case "CambiarMontos"
                        Dim pIdMotivo As Int32 = CType(varParams(1), Int32)
                        Dim pIdSeparacionVenta As Int32 = CType(varParams(2), Int32)
                        cobranzaDetalle = Session("cobranzaDetalle")
                        cobranzas = Session("cobranza")

                        '*** CALCULA DATOS DE LA SEPARACION VENTA 
                        Dim pSeparacionVenta As New EseparacionVenta
                        With pSeparacionVenta
                            .idProyecto = Me.Master.idProyecto
                            .idEtapa = Me.Master.idEtapa
                            .idSeparacionVenta = pIdSeparacionVenta
                        End With

                        Dim SeparacionVenta As New List(Of EseparacionVenta)
                        SeparacionVenta = RseparacionVenta.FiltrarSeparacionxId(Me.Master.descEmpresa, pSeparacionVenta)

                        Dim TotalCtaInicial = (From cb In SeparacionVenta _
                                     Select cb.ctaInicial).Single()

                        Dim wTotalSeparacion = (From cb In SeparacionVenta _
                                     Select cb.totalSeparacion).Single()


                        Dim TotalFinanciamiento = (From cb In SeparacionVenta _
                                     Select cb.financiamiento).Single()

                        '**** CALCULA EL MONTO TOTAL DE LOS INMUEBLES ***

                        Dim SeparacionVentaDetalle As New List(Of EseparacionVentaDetalle)
                        SeparacionVentaDetalle = RseparacionVentaDetalle.Filtrar(Me.Master.descEmpresa, pSeparacionVenta)

                        Dim TotalPrecioVenta = (From cb In SeparacionVentaDetalle _
                             Select cb.valorVenta).Sum()



                        '*** CALCULA DATOS DE LA SEPARACION VENTA DETALLE)

                        Dim PendienteInicial = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = 1 AndAlso cb.idEstadoPago = 1 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()

                        Dim CanceladoInicial = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = 1 AndAlso cb.idEstadoPago = 2 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()

                        Dim PendienteFinanciamiento = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = 2 AndAlso cb.idEstadoPago = 1 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()

                        Dim CanceladoFinanciamiento = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = 2 AndAlso cb.idEstadoPago = 2 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()


                        Dim Montos = TotalPrecioVenta.ToString("###,##0.00") + "@" + wTotalSeparacion.ToString("###,##0.00") + "@" + TotalCtaInicial.ToString("###,##0.00") + "@" + _
                                     TotalFinanciamiento.ToString("###,##0.00") + "@" + PendienteInicial.ToString("###,##0.00") + "@" + CanceladoInicial.ToString("###,##0.00") + "@" + _
                                     PendienteFinanciamiento.ToString("###,##0.00") + "@" + CanceladoFinanciamiento.ToString("###,##0.00")

                        _callbackArgument = "CambiarMontos|CambiarMontos|" + pIdSeparacionVenta.ToString() + "|" + Montos

                    Case "distribuir"
                        Dim pIdMotivo As Int32 = CType(varParams(1), Int32)
                        Dim pIdSeparacionVenta As Int32 = CType(varParams(2), Int32)
                        cobranzaDetalle = Session("cobranzaDetalle")
                        cobranzas = Session("cobranza")

                        '*** CALCULA DATOS DE LA SEPARACION VENTA DETALLE)
                        Dim idCorrelativo As Int32 = 0
                        Dim fecha As Date
                        Dim nroCta As Int32 = 0

                        idCorrelativo = (From cb In cobranzaDetalle _
                                                 Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 _
                                                 AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                                 Select cb.correlativo).Min()
                        fecha = (From cb In cobranzaDetalle _
                                     Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 AndAlso cb.correlativo = idCorrelativo _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                     Select cb.fchCancelacion).Single()
                        nroCta = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.idMotivo).Count()

                        Dim MontoCuotas = (From cb In cobranzaDetalle _
                                      Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 _
                                     AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                      Select cb.cuota).Sum()


                        'Define tira Montos

                        Dim Montos = MontoCuotas.ToString("###,##0.00")

                        Dim x = CargarDistribuirs(pIdMotivo, pIdSeparacionVenta)

                        gvwDistribuir.DataSource = From cb In cobranzaDetalle _
                                                       Where cb.idMotivo = pIdMotivo AndAlso cb.idEstadoPago = 1 _
                                                        AndAlso cb.idSeparacionVenta = pIdSeparacionVenta _
                                                       Order By cb.correlativo _
                                                       Select cb.correlativo, cb.fchCancelacion, cb.descMotivo, cb.cuota, cb.descEstadoPago
                        gvwDistribuir.DataBind()
                        gvwDistribuir.RenderControl(htm)
                        htm.Flush()

                        _callbackArgument = "distribuir|distribuir|" + pIdSeparacionVenta.ToString() + "|" + pIdMotivo.ToString() + "|" + fecha.ToString("dd/MM/yyyy") + "|" + Montos + "|" + nroCta.ToString() + "|" + sr.ToString()

                    Case "dividir"
                        Dim pIdMotivo As Int32 = CType(varParams(1), Int32)
                        Dim pIdSeparacionVenta As Int32 = CType(varParams(2), Int32)
                        Dim wDividir = dividir(pIdMotivo, pIdSeparacionVenta, CType(varParams(3), Decimal), CType(varParams(4), Int32), CType(varParams(5), String))

                        Dim monto = (From cb In distribuirs _
                                     Select cb.cuota).Sum()

                        _callbackArgument = "dividir|dividir|" + monto.ToString("###,#00.00") + "|" + wDividir

                    Case "saveDistribuir"
                        Dim pCobranza As New EseparacionVentaDetallePagos _
                        With { _
                        .idProyecto = Me.Master.idProyecto, _
                        .idEtapa = Me.Master.idEtapa, _
                        .idSeparacionVenta = CType(varParams(2), Int32), _
                        .idMotivo = CType(varParams(3), Int32), _
                        .idEstadoPago = 1 _
                        }

                        distribuirs = Session("distribuirs")

                        Dim totalCuotas As Decimal = 0
                        For Each cuota As EseparacionVentaDetallePagos In distribuirs
                            totalCuotas += cuota.cuota
                        Next

                        For Each cuota As EseparacionVentaDetallePagos In distribuirs
                            cuota.montoPago = totalCuotas
                        Next


                        If Ccobranza.distribuirPagos(Me.Master.descEmpresa, pCobranza, distribuirs) Then
                            _callbackArgument = "saveDistribuir|saveDistribuir|True|" + cargarPagos(CType(varParams(1), String).Trim, CType(varParams(4), String).Trim)
                        Else
                            _callbackArgument = "saveDistribuir|saveDistribuir|False"
                        End If
                    Case "generarCuotas"
                        btnGenerarCuotas(CType(varParams(1), Int32), _
                                             CType(varParams(2), Int32), CType(varParams(3), Decimal))
                        gvwDistribuir.RenderControl(htm)
                        htm.Flush()

                        Dim ctaInicials As New List(Of EseparacionVentaDetallePagos)
                        'ctaInicials = Me.sDetalleSeparacionPagosCtaInicial
                        ctaInicials = Session("distribuirs")

                        Dim totalCtaInicial As Decimal = 0
                        For Each cuota As EseparacionVentaDetallePagos In ctaInicials
                            If cuota.idEstadoPago = 1 Then
                                totalCtaInicial += cuota.cuota
                            End If
                        Next
                        _callbackArgument = "divgvwDistribuir|generarCuotasInicial|" + totalCtaInicial.ToString("#,###,##0.00") + "|" + "Total Cuotas Distribuidas: " + totalCtaInicial.ToString("#,###,##0.00") + "|divgvwDistribuir|" + sr.ToString()

                    Case "showDetCta"
                        Dim id As Int32 = CType(varParams(1), Int32)
                        distribuirs = Session("distribuirs")
                        Dim Lcuota = From v In distribuirs _
                                     Where v.correlativo.ToString = id _
                                     Select v
                        _callbackArgument = "showDetCta|showDetCta|" + id.ToString + "|" + Lcuota.ElementAt(0).fchCancelacion + "|" + Lcuota.ElementAt(0).cuota.ToString

                    Case "GrabarCuotaDetalle"
                        distribuirs = Session("distribuirs")
                        Dim IdCuotaDetalle = varParams(1)
                        Dim FechaCuotaDetalle = varParams(2)
                        Dim MontoCuotaDetalle = varParams(3)
                        Dim pIdMotivo = varParams(4)

                        distribuirs = Session("distribuirs")
                        Dim Lcuota = From v In distribuirs _
                                     Where v.correlativo = CType(IdCuotaDetalle, Int32) _
                                     Select v

                        Lcuota.ElementAt(0).fchCancelacion = FechaCuotaDetalle
                        Lcuota.ElementAt(0).cuota = CType(MontoCuotaDetalle, Decimal)
                        Session("distribuirs") = distribuirs
                        gvwDistribuir.DataSource = distribuirs
                        gvwDistribuir.DataBind()
                        gvwDistribuir.RenderControl(htm)
                        htm.Flush()

                        Dim totalPendiente As Decimal = 0
                        For Each cuota As EseparacionVentaDetallePagos In distribuirs
                            If cuota.idEstadoPago = 1 Then
                                totalPendiente += cuota.cuota
                            End If
                        Next

                        _callbackArgument = "GrabarCuotaDetalle|GrabarCuotaDetalle|" + totalPendiente.ToString("#,###,##0.00") + "|" + sr.ToString()

                    Case "GrabaMontos"
                        Dim nroDocumento = varParams(4)
                        Dim pSeparacionVenta As New EseparacionVenta _
                        With { _
                        .idProyecto = Me.Master.idProyecto, _
                        .idEtapa = Me.Master.idEtapa, _
                        .idSeparacionVenta = CType(varParams(1), Int32), _
                        .totalSeparacion = 0, _
                        .ctaInicial = CType(varParams(2), Decimal), _
                        .financiamiento = CType(varParams(3), Decimal) _
                        }

                        If RseparacionVenta.SeparacionActualizarMontos(Me.Master.descEmpresa, pSeparacionVenta).ToString() Then
                            _callbackArgument = "GrabaMontos|GrabaMontos|True|" + cargarPagos(CType(nroDocumento, String).Trim, CType(varParams(5), String).Trim)
                        Else
                            _callbackArgument = "GrabaMontos|GrabaMontos|False"
                        End If

                    Case "ShowInsertarCuota"

                        Dim CorrelativoMin As Int32
                        Dim CorrelativoMax As Int32

                        distribuirs = Session("distribuirs")

                        CorrelativoMin = (From cb In distribuirs _
                                    Select cb.correlativo).Min()

                        CorrelativoMax = (From cb In distribuirs _
                                     Select cb.correlativo).Max()

                        _callbackArgument = "ShowInsertarCuota|ShowInsertarCuota|" + CorrelativoMin.ToString + "|" + CorrelativoMax.ToString

                    Case "GrabaInsertarCuota"

                        Dim pCorrelativo = CType(varParams(1), Int32)
                        Dim pFechaCuota = varParams(2)
                        Dim pMontoCuota = CType(varParams(3), Decimal)

                        distribuirs = Session("distribuirs")

                        Dim distribuir As EseparacionVentaDetallePagos = Nothing
                        Dim distribuirs2 As New List(Of EseparacionVentaDetallePagos)


                        For Each cuota As EseparacionVentaDetallePagos In distribuirs
                            If cuota.correlativo = pCorrelativo Then
                                distribuirs2.Add(cuota)
                                Dim cuota2 As New EseparacionVentaDetallePagos
                                With cuota2
                                    .idProyecto = Me.Master.idProyecto
                                    .idEtapa = Me.Master.idEtapa
                                    .idSeparacionVenta = cuota.idSeparacionVenta
                                    .idSeparacionVentaPago = cuota.idSeparacionVentaPago
                                    .tpoGestion = cuota.tpoGestion
                                    .idEdificio = cuota.idEdificio
                                    .idModelo = cuota.idModelo
                                    .idUndInmob = 0
                                    .idTpoInmueble = 0
                                    .fchPago = cuota.fchPago
                                    .idFormaPago = cuota.idFormaPago
                                    .montoPago = cuota.montoPago
                                    .idMoneda = cuota.idMoneda
                                    .idTpoCambio = 0
                                    .conInteres = 0
                                    .tea = 0
                                    .tim = 0
                                    .correlativo = pCorrelativo + 1
                                    .fchCancelacion = pFechaCuota
                                    .idMotivo = cuota.idMotivo
                                    If cuota.idMotivo = 1 Then
                                        .descMotivo = "CUOTA INICIAL"
                                    Else
                                        .descMotivo = "SALDO FINANCIAR"
                                    End If
                                    .amortizacion = 0
                                    .interes = 0
                                    .cuota = pMontoCuota
                                    .saldo = 0
                                    .idEstadoPago = 1
                                    .descEstadoPago = "PENDIENTE"
                                End With
                                distribuirs2.Add(cuota2)
                            ElseIf cuota.correlativo > pCorrelativo Then
                                cuota.correlativo = cuota.correlativo + 1
                            End If
                            If cuota.correlativo <> pCorrelativo Then
                                distribuirs2.Add(cuota)
                            End If
                        Next

                        Session("distribuirs") = distribuirs2

                        gvwDistribuir.DataSource = distribuirs2
                        gvwDistribuir.DataBind()
                        gvwDistribuir.RenderControl(htm)
                        htm.Flush()

                        Dim totalPendiente As Decimal = 0
                        For Each cuota As EseparacionVentaDetallePagos In distribuirs2
                            If cuota.idEstadoPago = 1 Then
                                totalPendiente += cuota.cuota
                            End If
                        Next
                        _callbackArgument = "GrabaInsertarCuota|GrabaInsertarCuota|" + totalPendiente.ToString("#,###,##0.00") + "|" + sr.ToString()
                End Select
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
#End Region

End Class